package com.zenithmind.gateway.config;

import java.util.List;
import java.util.Map;

/**
 * 配置管理器接口
 * 遵循接口隔离原则：定义配置管理的核心方法
 * 遵循依赖倒置原则：高层模块依赖抽象而非具体实现
 */
public interface ConfigurationManager {
    
    /**
     * 获取服务路由配置
     * @return 服务路由映射
     */
    Map<String, List<String>> getServiceRoutes();
    
    /**
     * 获取网关认证配置
     * @return 认证配置
     */
    AuthConfiguration getAuthConfiguration();
    
    /**
     * 获取安全配置
     * @return 安全配置
     */
    SecurityConfiguration getSecurityConfiguration();
    
    /**
     * 刷新配置
     */
    void refreshConfiguration();
    
    /**
     * 认证配置接口
     */
    interface AuthConfiguration {
        boolean isEnabled();
    }
    
    /**
     * 安全配置接口
     */
    interface SecurityConfiguration {
        boolean isEnabled();
        List<String> getPublicPaths();
        List<String> getProtectedPaths();
        List<String> getIgnoreUrls();
    }
}
